package main

import (
	"fmt"
	"runtime"
	"sync"
)

func init()  {
	fmt.Println("Current Go Version",runtime.Version())
}
func main()  {
	runtime.GOMAXPROCS(1)//设置cpu核数

	count:=10
	wg:=sync.WaitGroup{}//设置线程等待组
	wg.Add(count*2)
	for i:=0;i<count;i++{
		go func() {
			fmt.Printf("[%d]",i)
			wg.Done() //每次执行完必须减一个线程
		}()
	}
	for i:=0;i<count ;i++  {
		go func(i int) {
			fmt.Printf("-%d-",i)
			wg.Done()//每次执行完必须减一个线程
		}(i)
	}
	wg.Wait()//线程等待状态。直到WaitGroup变为0才往后执行

}
/*输出结果
-9-[10][10][10][10][10][10][10][10][10][10]-0--1--2--3--4--5--6--7--8-
10是第一个goroutine的。因为这两个goroutine调用i是完全不同的，所以导致结果也完全不同
*/